/* 
    判断质数函数
        isPrimeNumber

        @param  number  num     输入的要判断的数据
        @return bool    是质数返回 true 不是质数返回 false
*/ 
function isPrimeNumber(num){
    
    for( var i = 2 ; i <= num / 2 ; i++ ){
        if( num % i === 0 ){
            // 如果发生整除 直接返回 false
            return false;
        }
    }
    // 如果 循环中 没有 触发 return 
    // 证明 没有执行 整除 返回 true
    return true;
}

/*
    验证回文字符串
        isPalindromeString   

        @param  string  str     输入的要判断的字符串
        @return bool    是回文字符串返回 true 不是回文字符串返回 false
*/
function isPalindromeString( str ){
    // 将 字符串 分为数组 每一个字符 都要分割为一个单元
    var arr = str.split('');
    // 将 数组 反转
    arr.reverse();
    // 将 反转数组 拼接为字符串 没有间隔
    var newStr = arr.join('');
    // 判断两个字符串 是不是 相同
    if( str === newStr ){
        return true;
    }else{
        return false;
    }
}

/*
    随机颜色函数
        getRGB

        @return string  返回生成的rgb形式的颜色字符串

*/
function getRGB(){
    return `rgb(${parseInt(Math.random()*256)},${parseInt(Math.random()*256)},${parseInt(Math.random()*256)})`;
}


/*
    随机颜色函数
        getRGBA

        @return string  返回生成的rgba形式的颜色字符串

*/
function getRGBA(){
    return `rgba(${parseInt(Math.random()*256)},${parseInt(Math.random()*256)},${parseInt(Math.random()*256)},${parseInt(Math.random()*11)/10})`;
}

/*
    获取数据对象函数
        myGetTime

        @param     string   输入的时间数据字符串 格式是 年 月 日 时:分:秒
        @return    object   返回值是获取时间的时间数据

*/ 
function myGetTime( timeStr ){
    // 创建一个时间对象
    if( timeStr === undefined ){
        // 没有输入时间 获取 当期时间对象
        var time = new Date();
    }else{
        // 输入时间参数 获取 时间参数对应的时间对象
        var time = new Date( timeStr );
    }

    // 定义星期数组
    var weekArr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];

    // 返回时间对象 前导补零
    return {
        year : time.getFullYear(),
        month : time.getMonth()+1 < 10 ? '0' + (time.getMonth()+1) :  time.getMonth()+1 ,
        day : time.getDate() < 10 ? '0' + time.getDate() : time.getDate(),
        week: weekArr[ time.getDay() ],
        hours : time.getHours() < 10 ? '0' + time.getHours() : time.getHours(),
        minutes : time.getMinutes() < 10 ? '0' + time.getMinutes() : time.getMinutes(),
        seconds : time.getSeconds() < 10 ? '0' + time.getSeconds() : time.getSeconds(),

    }
}


/*
    倒计时的时间数据
        getTimeDifference

        @param  string endTime 终止时间 时间字符串
        @return object 时间差对象 天 小时 分钟 秒

*/

function getTimeDifference( endTime ){
    // 获取 当前事件对象 和 终止时间对象
    var start = new Date();
    var end = new Date(endTime);
    // 获取时间差秒数
    var t = parseInt( ( end.getTime() - start.getTime() ) / 1000 ) ;
    // 计算天
    var d = parseInt( t / (24*60*60) );
    var h = parseInt( ( t % (24*60*60) ) / ( 60*60 ) );
    var m = parseInt( ( t % (60*60) ) / 60 );
    var s =  t % 60 ;
    // 返回值 前导补零
    return {
        d : d < 10 ? '0' + d : d ,
        h : h < 10 ? '0' + h : h ,
        m : m < 10 ? '0' + m : m ,
        s : s < 10 ? '0' + s : s ,
    }
}

/*
    获取css样式 考虑兼容性
    myGetStyle
        @param  object element  要获取css的标签对象
        @param  string type     要获取css的属性
        @return string 返回获取的cs样式的属性值
*/ 
function myGetStyle(element , type){
    if(window.getComputedStyle){
        // 有 这个方法 是 普通浏览器 可以使用这个方法获取css样式
        return window.getComputedStyle(element)[type] ; 
    }else{
        // 没有 这个方法 是 第版本IE浏览器 
        return element.currentStyle[type] ; 
    }
}

/*
    获取rul地址数据
        getUrlObj
            @return object 获取 浏览器地址栏参数数据 转化为的对象
*/ 

function getUrlObj(){
    // 定义一个对象
    var obj = {};
    // 获取字符串 没有 ? 
    var str = window.location.search.substr(1);
    // 将字符串按照 & 符号转化为数组
    var arr = str.split('&');
    // 循环遍历数组
    arr.forEach(function(item){
        // item就是键值对 按照 = 等号 转化为数组
        var newArr = item.split('=');
        // 新数组 索引0 存储 键名
        // 新数组 索引1 存储 键值

        // 浏览器地址栏中 中文 特殊符号 会使用 %两位十六机制数值的形式显示
        // 需要使用 window.decodeURIComponent() 还原为对应的中文或者符号
        obj[ newArr[0] ] = window.decodeURIComponent( newArr[1] );
    })

    // 返回 对象
    return obj;
}


/*
    随机验证码
        setVC
            @return string 随机生成验证码内容

*/ 

function setVC( num = 6 , string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ){
    let str = '' ;
    while( str.length !== num ){
        // 生成随机的索引下标
        let index = parseInt( Math.random()*string.length );
        // 如果验证码字符串中没有随机索引下标对应的字符,再生成写入
        if( str.indexOf( string[index] ) === -1){
            str += string[index];
        }
    }

    return str ;
}
